﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
using FSS.Core.Controls;
using FSS.BLL.Entities;
using FSS.BLL.Services;
using FSS.BLL;
using FSS.Core.Util;

namespace SalesManagement.Controls.List
{
    public partial class MeasureForm : BaseControl
    {
        public event EventHandler SaveClick;
        private void OnSaveClick()
        {
            if (SaveClick != null)
            {
                SaveClick(this, EventArgs.Empty);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindingUnit();
            }
        }
        public void Show(int id)
        {
            this.FormPanel1.Reset();
            BindingUnit();
            txtProductID.Text = id.ToString();
            this.winDetails.Show();
        }
        public void ShowEdit(int productid, int baseunit, int ratiounit)
        {
            BindingUnit();
            txtProductID.Text = productid.ToString();
            txtRatioUnit.Text = baseunit.ToString();
            txtBaseUnit.Text = ratiounit.ToString();
            MeasureEntity measureE = new MeasureEntity();
            MeasureService measureS = MeasureService.GetInstance();
            measureE.ProductId = productid;
            measureE.BasicUnit = baseunit;
            measureE.RatioUnit = ratiounit;
            measureE = measureS.LoadByPrimaryKey(measureE);
            if (!measureE.Equals(null))
            {
                cboBasicUnit.SelectedItem.Value = measureE.BasicUnit.ToString();
                cboRatioUnit.SelectedItem.Value = measureE.RatioUnit.ToString();
                txtRatio.Text =Format.ConvertToInt(measureE.Ratio).ToString();
                this.winDetails.Show();
            }

        }
        protected void btnSave_Click(object sender, DirectEventArgs e)
        {
            if (checkInputDate().Equals(true))
            {
                InsertData();
                OnSaveClick();
                this.winDetails.Hide();
            }
            else
                return;
        }
        private void InsertData()
        {
            MeasureEntity measureE = new MeasureEntity();
            MeasureService measureS = MeasureService.GetInstance();
            measureE.BasicUnit = Format.ConvertToInt(cboBasicUnit.SelectedItem.Value);
            measureE.RatioUnit = Format.ConvertToInt(cboRatioUnit.SelectedItem.Value);
            measureE.Ratio = Decimal.Parse(txtRatio.Text);
            if (measureE.BasicUnit.Equals(measureE.RatioUnit) && !measureE.Ratio.Equals(1))
            {
                X.Msg.Alert("Chú ý", "Đơn vị gốc và đơn vị quy đổi giống nhau. Tỷ lệ phải bằng 1").Show();
                return;
            }
            else
            {
                measureE.ProductId = Format.ConvertToInt(txtProductID.Text);
                measureE.IsActive = true;
                measureE.CreatedDate = DateTime.Now;
                measureE.CreatedBy = FSSContext.Current.User.EmployeeId;
                measureE.UpdatedDate = DateTime.Now;
                measureE.UpdatedBy = FSSContext.Current.User.EmployeeId;
                List<MeasureEntity> listMeasure = (List<MeasureEntity>)measureS.LoadByPrimaryKeyList(measureE);                
                if (listMeasure.Count == 0)
                {
                    if (txtBaseUnit.Text.Equals("") && txtRatioUnit.Text.Equals(""))
                    {
                        measureS.Insert(measureE);
                    }
                    else
                    {
                        measureE.BasicUnit = Format.ConvertToInt(txtBaseUnit.Text);
                        measureE.RatioUnit = Format.ConvertToInt(txtRatioUnit.Text);
                        measureS.Update(measureE);
                    }
                }
                else
                {
                    X.Msg.Alert("Lỗi", "Bảng quy đổi đơn vị này đã tồn tại").Show();
                    return;
                }
            }

        }
        private bool CheckData()
        {
            return true;
        }
        private void BindingUnit()
        {
            UnitEntity unitE = new UnitEntity();
            UnitService unitS = UnitService.GetInstance();
            List<UnitEntity> listUnit = (List<UnitEntity>)unitS.LoadAll();
            if (!listUnit.Equals(null))
            {
                storeUnit.DataSource = listUnit;
                storeUnit.DataBind();
                cboBasicUnit.SelectedIndex = 0;
                cboRatioUnit.SelectedIndex = 0;
            }

        }
        private bool checkInputDate()
        {
            string msg = "";
            if (txtRatio.Text.Equals(""))
                msg += "<br/>Tỷ lệ quy đổi";
            if (msg.Equals(""))
                return true;
            else
            {
                X.Msg.Alert("Lỗi nhập", "Dữ liệu không được bỏ trống:" + msg + "<br/>Vui lòng nhập đầy đủ thông tin").Show();
                return false;
            }

        }
    }
}